#! /usr/bin/env python
# -*- coding:utf-8 -*-

# 字符串补充知识
print('')

'''
私有方法：
（1）判断是否以某个字符或字符串开头，判断是否以某个字符或字符串结尾 startswith/endswith
（2）格式化 字符串.format，使用了占位符
（3）编码，encode
（4）连接，join
公共方法：
（1）步长 
（2）for循环
'''

# 判断Alex是否以Al开头 原始写法
name = 'Alex'
sub_str = name[0:2]
if sub_str == "Al":
    print('没错，就是以Al开头')
else:
    print('错了，不是以Al开头')

# 新写法
name = 'Alex'
if sub_str.startswith('Al'):
    print('没错，就是以Al开头')
else:
    print('错了，不是以Al开头')

# 字符串格式化1，直接使用{}作为类似占位符使用
name='我叫{},今年{}，我为我{}学python，没错，我的名字是{}'.format('clyang',34,'儿子','clyang')
print(name)

# 字符串格式化2 0 1 2 就是后面的索引号，可以重复使用
name = '我叫{0},今年{1}，我为我{2}学python，没错，我的名字是{0}'.format('clyang', 34, '儿子')
print(name)

# 字符串格式化3 ，可以使用映射
name = '我叫{name},今年{age}，我为我{name}学python，没错，我的名字是{name}'.format(name='clyang',age=28)
print(name)



# encode
name = '李杰'  # 解释器读取到内存后，按照unicode编码方式存储，这里两个中文字符占8个字节
v1 = name.encode('UTF-8')  # b'\xe6\x9d\x8e\xe6\x9d\xb0' 6个字节
print(v1)
v2 = name.encode('GBK')  # b'\xc0\xee\xbd\xdc' 4个字节
print(v2)

# join
name = 'Alex'
result = '_'.join(name)  # 循环每个元素，在元素和元素之间加入连接符
print(result)  # A_l_e_x

# 步长，就是increment的感觉
name = 'alexalex'
v1 = name[0:-1]
print(v1)  # alexale 默认
v2 = name[0:-1:1]
print(v2)  # alexale 每隔1位
v3 = name[0:-1:2]
print(v3)  # aeae 每隔2位
v4 = name[0::2]
print(v4)  # aeae 每隔2位
v5 = name[::2]
print(v5)  # aeae 每隔2位
v6 = name[-1:0:-1]
print(v6)  # xelaxel
v7 = name[-1:0:-2]
print(v7)  # xlxl

# 步长应用经典面试题:将alex反过来打印
name = 'alex'
v = name[::-1]
print(v)  # xela

# for 循环
name = 'Alex'
for item in name:
    print(item)
print(item)  # x

# for循环适合循环打印字符串，如果想得到死循环，需要用while
# 有穷尽的情况优先使用for，没有则优先使用while
# for循环中也可以使用break，continue
name = 'Alex'
for item in name:
    print(item)
    break
    print('我执行了吗') #ide自动提示代码unreachable

name = 'Alex'
for item in name:
    print(item)
    continue
    print('我执行了吗') #ide自动提示代码unreachable

# range的使用，配合for循环，打印1-10
for item in range(1,11): # range里是一个列表，自动生成[1,2,3,...,10]
    print(item)

# range的使用，配合for循环，打印1-10，但是不打印7
for item in range(1,11): # range里是一个列表，自动生成[1,2,3,...,10]
    if item==7:
        continue
    print(item)